SELinux(Security-Enhanced Linux) 가이드
📌 SELinux란?
SELinux는 미국 국가안보국(NSA)에서 개발한 Linux 커널 보안 모듈입니다. 기존 Linux의 임의 접근 제어(DAC, Discretionary Access Control)에 더해 강제 접근 제어(MAC, Mandatory Access Control)를 제공하여 보안을 강화합니다.
🤔 왜 SELinux를 사용해야 하나요?
기존 Linux 보안의 한계
일반적인 Linux 시스템의 보안은 다음과 같은 한계가 있습니다:
단순한 권한 체계
- 파일과 디렉토리에 대한 읽기(r), 쓰기(w), 실행(x) 권한만 존재
- 사용자(u), 그룹(g), 기타(o)로만 구분
- root 사용자는 모든 권한을 가짐
권한 상승 취약점
- 악성 프로그램이 root 권한을 획득하면 시스템 전체가 위험
- 프로세스가 필요 이상의 권한을 가질 수 있음
SELinux의 장점
세분화된 접근 제어
- 프로세스, 파일, 디렉토리 등에 보안 컨텍스트 부여
- 각 자원에 대한 접근 규칙을 상세하게 정의 가능
최소 권한 원칙 실현
- 각 프로세스가 필요한 최소한의 권한만 가지도록 제한
- root 권한을 가진 프로세스도 SELinux 정책에 따라 제한됨
보안 격리
- 프로세스와 리소스를 보안 도메인으로 격리
- 한 서비스가 침해되어도 다른 서비스에 영향 최소화
🌐 어떤 환경에서 SELinux를 사용해야 할까요?
1. 기업 환경
- 중요한 비즈니스 데이터를 다루는 서버
- 고객 정보를 저장하는 데이터베이스 서버
- 결제 시스템이 운영되는 서버
# 예: 웹 서버와 데이터베이스 서버 분리
# 웹 서버는 특정 포트와 디렉토리만 접근 가능
httpd_t context → 80/443 포트, /var/www/html
# 데이터베이스는 자신의 데이터 디렉토리만 접근 가능
mysqld_t context → /var/lib/mysql
2. 공공기관 및 금융권
- 정부 기관의 서버 시스템
- 금융 거래 시스템
- 개인정보 처리 시스템
3. 멀티 테넌트 환경
- 클라우드 서비스 제공 환경
- 호스팅 서비스
- 여러 고객의 서비스가 한 서버에서 운영되는 환경
📊 Ubuntu vs Rocky Linux vs SELinux 비교
Ubuntu (기본 AppArmor 사용)
장점:
- 사용이 간단하고 직관적
- 설정이 비교적 쉬움
- 널리 사용되어 참고자료가 많음
단점:
- 보안 정책이 덜 세밀함
- 강제 접근 제어가 제한적
Rocky Linux (SELinux 기본 탑재)
장점:
- RHEL과 완벽한 호환성
- 기업 환경에 적합한 보안 정책
- 세밀한 접근 제어 가능
단점:
- 학습 곡선이 가파름
- 초기 설정이 복잡할 수 있음
SELinux 적용 시스템
장점:
- 매우 세밀한 접근 제어
- 보안 정책의 중앙 관리
- 시스템 전반적인 보안 강화
단점:
- 설정이 복잡하고 어려움
- 잘못 설정 시 서비스 장애 가능성
- 트러블슈팅이 어려울 수 있음
🎯 SELinux 사용이 특히 권장되는 상황
웹 서버 운영
- 외부 접속이 많은 서버
- 중요한 데이터를 다루는 웹 애플리케이션
- 여러 웹 서비스가 동시 운영되는 환경
데이터베이스 서버
- 민감한 정보를 저장하는 데이터베이스
- 여러 애플리케이션이 접근하는 데이터베이스
- 규제가 엄격한 산업의 데이터베이스
컨테이너 환경
- Docker, Kubernetes 등의 컨테이너 플랫폼
- 마이크로서비스 아키텍처
- 컨테이너 간 격리가 중요한 환경